/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mylaensys.dhtmlx.tags;

import com.mylaensys.dhtmlx.model.Menu;
import com.mylaensys.dhtmlx.model.MenuSeparator;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;

public class MenuSeparatorTag extends BaseTag {
    protected String nextTo = null;

    public String getNextTo() {
        return nextTo;
    }

    public void setNextTo(String nextTo) {
        this.nextTo = nextTo;
    }

     public MenuTag getMenu() {
        MenuTag menu = null;
        Tag tag = this.getParent();
        while (tag != null) {
            if (tag instanceof MenuTag) {
                menu = (MenuTag) tag;
            }
            tag = tag.getParent();
        }
        return menu;
    }
     public void accept( MenuTag sibling ) { }
     public void accept( MenuSiblingTag sibling ) { }
     public void accept( MenuChildTag child ) { }

    public int doStartTag() throws JspException {

              try {
                  BaseTag parent = (BaseTag) getParent();
                  MenuSeparator separator = new MenuSeparator(parent.component, nextTo );
                  component = separator ;
                  parent.component.getComponents().add(component);
                  accept(this.getParent());
                  separator.setMenu((Menu) this.getMenu().component );
              } catch (ClassNotFoundException e) {
                  throw new JspException(e.getMessage());
              } catch (InstantiationException e) {
                  throw new JspException(e.getMessage());
              } catch (Exception e) {
                  throw new JspException("MenuSeparator Tag can only reside within a MenuSibling or MenuChild");
              }
              return super.doStartTag();
          }


}
